package com.zhangyue.programmer.util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class ResultSetUtil {
    public static <T> List<T> getList(ResultSet rs, Class<T> clazz) throws Exception {
        List<T> list = new ArrayList<T>();
        while(rs.next()) {
            T obj = clazz.newInstance(); // 创建新对象实例
            Field[] fields = clazz.getDeclaredFields(); // 获取所有字段对象
            for(Field field : fields) {
                field.setAccessible(true); // 设置可访问性（如果字段是私有的）
                String name = field.getName();
               String firstLetter = name.substring(0, 1);
                String Name = firstLetter.toUpperCase() + name.substring(1);
                Method method = clazz.getMethod("set" +Name,field.getType()); // 获取getter方法对象
                method.invoke(obj,rs.getObject(name)); // 调用getter方法获取值
//                field.set(obj, value); // 设置字段值（使用反射）
            }
            list.add(obj); // 将对象添加到列表中
        }
        return list;
    }
}
